home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 27 / CU Amiga Magazine's Super CD-ROM 27 (1998)(EMAP Images)(GB)[!][issue 1998-10].iso / CUCD / PowerPC / vbcc / machines / amigawos / libsrc / stdio / _write.c < prev    next >
C/C++ Source or Header  |  1998-08-02  |  792b  |  46 lines

  1. /*
  2. ** vbcc-PowerOpen/WarpOS Lowlevel write() function
  3. **
  4. ** v0.1 31.07.98 phx
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <errno.h>
  9.  
  10. #include <powerpc/powerpc.h>
  11. #include <clib/powerpc_protos.h>
  12.  
  13. extern APTR DOSBase;
  14.  
  15.  
  16. long _write(char *fh,void *buf,long size)
  17. {
  18.   struct PPCArgs pa;
  19.   long n;
  20.  
  21.   if (!fh) {
  22.     errno = EBADF;
  23.     return (EOF);
  24.   }
  25.   if (size <= 0) {
  26.     errno = EINVAL;
  27.     return (EOF);
  28.   }
  29.  
  30.   pa.PP_Code = DOSBase;
  31.   pa.PP_Offset = -48;  /* _LVOWrite */
  32.   pa.PP_Flags = pa.PP_StackSize = 0;
  33.   pa.PP_Stack = NULL;
  34.   pa.PP_Regs[PPREG_D1] = (ULONG)fh;
  35.   pa.PP_Regs[PPREG_D2] = (ULONG)buf;
  36.   pa.PP_Regs[PPREG_D3] = (ULONG)size;
  37.   pa.PP_Regs[PPREG_A6] = (ULONG)DOSBase;
  38.   Run68k(&pa);
  39.  
  40.   if ((n = (long)pa.PP_Regs[PPREG_D0]) == -1) {
  41.     errno = EIO;
  42.     return (EOF);
  43.   }
  44.   return (n);
  45. }
  46.